package 序列化流;

import java.io.*;
// 反序列化流
public class DeserializationDemo {
    public static void main(String[] args) {
        Person person = null;

        try (// 1. 创建节点流（字节流），连接到源文件
             FileInputStream fis = new FileInputStream("person.dat");
             // 2. 创建处理流（反序列化流），包裹节点流
             ObjectInputStream ois = new ObjectInputStream(fis)) {

            // 3. 关键操作：读取（反序列化）字节流并重建对象
            // 需要强制类型转换
            person = (Person) ois.readObject();
            System.out.println("对象反序列化成功！");
            System.out.println(person); // 调用 toString 方法

        } catch (IOException | ClassNotFoundException e) { // 注意 ClassNotFoundException
            e.printStackTrace();
        }

        // 输出：Person{name='Alice', age=30, password='null'}
        // password 被 transient 修饰，所以反序列化后为 null（默认值）
    }
}